#include <bits/stdc++.h>
using namespace std;
/*因为如果一个数不是质数，那么它一定可以分解成两个数的乘积，其中一个数必定小于等于它的平方根，另一个数必定大于等于它的平方根。
所以在循环中，只需要判断从2到sqrt_num之间的数是否能整除输入的数即可。*/
bool isPrime(int num)
{
    if(num<=1) return false;
    int sqrt_num = sqrt(num);
    for(int i=2; i<=sqrt_num; i++)
    {
        if(num%i==0)
            return false;
    }
    return true;
}

int main()
{
    int n;
    int sum = 0;
    cin >> n;
    for (int i = 2; i <= n; i++)
    {
        if (isPrime(i))
        {
            cout << i << " ";
            sum++;
        }
    }

    cout << "\n"<<sum << endl;
}
